﻿/*!
 * Copyright (c), 上海沃恩信息科技有限公司.
 * All rights reserved.
 * Licensed under BSD (https://www.pittypat.work/bsd.html).
 */

using System;

namespace Pittypat
{
    /// <summary>
    /// 定义一个模块的相关元数据信息。
    /// </summary>
    [Serializable]
    [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
    public sealed class ModuleAttribute : Attribute
    {
        // 模块是否允许匿名用户访问和使用
        private bool allowAnonymous;
        // 模块的公开呈现方式
        private ModulePresentation presentation;

        /// <summary>
        /// 使用模块的公开呈现方式初始化 <see cref="ModuleAttribute"/> 类的新实例。
        /// </summary>
        public ModuleAttribute(ModulePresentation presentation)
        {
            this.allowAnonymous = false;
            this.presentation = presentation;
        }

        /// <summary>
        /// 获取或者设置一个值，该值指示模块是否允许匿名用户访问和使用。默认为 false。
        /// </summary>
        public bool AllowAnonymous
        {
            get
            {
                return this.allowAnonymous;
            }
            set
            {
                this.allowAnonymous = value;
            }
        }

        /// <summary>
        /// 获取模块的公开呈现方式。默认为 UI。
        /// </summary>
        public ModulePresentation Presentation
        {
            get
            {
                return this.presentation;
            }
        }
    }
}
